home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / dev / src / ConfigFileSrc.lha / ConfigFileSrc12 / RexxLibrary / Funcs / Header.c < prev    next >
Encoding:
Text File  |  1997-10-02  |  6.1 KB  |  267 lines

  1. /*
  2. **        $PROJECT: RexxConfigFile.library
  3. **        $FILE: Header.c
  4. **        $DESCRIPTION: Functions for Header changes.
  5. **
  6. **        (C) Copyright 1997 Marcel Karas
  7. **             All Rights Reserved.
  8. */
  9.  
  10. IMPORT struct Library *DOSBase;
  11. IMPORT struct Library *RexxSysBase;
  12. IMPORT struct Library *CFBase;
  13.  
  14. /****** rexxconfigfile.library/cf_GetOMode ***********************************
  15. *
  16. *   NAME
  17. *        cf_GetOMode -- Get the openmode from the header.
  18. *
  19. *   SYNOPSIS
  20. *        OMode = cf_GetOMode(Header)
  21. *
  22. *        OMODE cf_GetOMode(HEADER/N/A)
  23. *
  24. *   FUNCTION
  25. *        This function gets the openmode from the Header.
  26. *
  27. *   INPUTS
  28. *        Header - Pointer to the Header.
  29. *
  30. *   RESULT
  31. *        OMode - openmode (see cf_Open()).
  32. *
  33. *   SEE ALSO
  34. *        cf_Open()
  35. *
  36. ******************************************************************************
  37. *
  38. */
  39.  
  40. UWORD rxcf_GetOMode ( RX_FUNC_ARGS, CFHeader * Header )
  41. {
  42.     RXCFStrConv    OModeConv;
  43.  
  44.     OModeToStr  (&OModeConv, Header->OpenMode);
  45.     *ResStr = CreateArgstring (OModeConv.Str, OModeConv.Len);
  46.     return (RC_OK);
  47. }
  48.  
  49. /****** rexxconfigfile.library/cf_GetWBufSize ********************************
  50. *
  51. *   NAME
  52. *        cf_GetWBufSize -- Get the writebuffer size from the header.
  53. *
  54. *   SYNOPSIS
  55. *        WBufSize = cf_GetWBufSize(Header)
  56. *
  57. *        WBUFSIZE cf_GetWBufSize(HEADER/N/A)
  58. *
  59. *   FUNCTION
  60. *        This function gets the openmode from the Header.
  61. *
  62. *   INPUTS
  63. *        Header - Pointer to the Header.
  64. *
  65. *   RESULT
  66. *        WBufSize - writebuffer size.
  67. *
  68. ******************************************************************************
  69. *
  70. */
  71.  
  72. UWORD rxcf_GetWBufSize ( RX_FUNC_ARGS, CFHeader * Header )
  73. {
  74.     *ResStr = CreateNumArgStr (Header->WBufLength);
  75.     return (RC_OK);
  76. }
  77.  
  78. /****** rexxconfigfile.library/cf_GetPuddleSize ******************************
  79. *
  80. *   NAME
  81. *        cf_GetPuddleSize -- Get the puddlesize from the header.
  82. *
  83. *   SYNOPSIS
  84. *        PuddleSize = cf_GetPuddleSize(Header)
  85. *
  86. *        PUDDLESIZE cf_GetPuddleSize(HEADER/N/A)
  87. *
  88. *   FUNCTION
  89. *        This function gets the puddlesize from the Header.
  90. *
  91. *   INPUTS
  92. *        Header - Pointer to the Header.
  93. *
  94. *   RESULT
  95. *        PuddleSize - puddlesize.
  96. *
  97. ******************************************************************************
  98. *
  99. */
  100.  
  101. UWORD rxcf_GetPuddleSize ( RX_FUNC_ARGS, CFHeader * Header )
  102. {
  103.     *ResStr = CreateNumArgStr (Header->PuddleSize);
  104.     return (RC_OK);
  105. }
  106.  
  107. /****** rexxconfigfile.library/cf_ChkHdrFlag *********************************
  108. *
  109. *   NAME
  110. *        cf_ChkHdrFlag -- Check wheather a flag in the Header is set.
  111. *
  112. *   SYNOPSIS
  113. *        IsSet = cf_ChkHdrFlag(Header,Flag)
  114. *
  115. *        BOOL cf_ChkHdrFlag(HEADER/N/A,FLAG/A)
  116. *
  117. *   FUNCTION
  118. *        This function check wheather a flag in the Header is set.
  119. *
  120. *   INPUTS
  121. *        Header - Pointer to the Header.
  122. *        Flag - Flag to check:
  123. *
  124. *            HFLG_SHORT_FILE     -- File is in short format.
  125. *            HFLG_ASCII_FILE     -- File is in ascii format.
  126. *            HFLG_CHANGED        -- File is changed (this will be set, if
  127. *                                   you use functions like cf_Add/Change/
  128. *                                   Clone... on the open file).
  129. *            HFLG_WRITE_BY_CLOSE -- Writes the file by use of cf_Close().
  130. *
  131. *   RESULT
  132. *        IsSet - TRUE if the flags is set or FALSE if the flags not set.
  133. *
  134. *   SEE ALSO
  135. *        cf_RemHdrFlag(), cf_AddHdrFlag()
  136. *
  137. ******************************************************************************
  138. *
  139. */
  140.  
  141. UWORD rxcf_ChkHdrFlag ( RX_FUNC_ARGS, CFHeader * Header )
  142. {
  143.     if ( RXARG2 )
  144.     {
  145.         UBYTE    Flag = StrToHdrFlag (RXARG2);
  146.         if ( Flag == -1 ) return (RXERR_INVALID_ARG);
  147.         if ( Header->Flags & Flag ) *ResStr = SetRC_TRUE ();
  148.         return (RC_OK);
  149.     }
  150.  
  151.     return (RXERR_INVALID_ARG);
  152. }
  153.  
  154. /****** rexxconfigfile.library/cf_AddHdrFlag *********************************
  155. *
  156. *   NAME
  157. *        cf_AddHdrFlag -- Add a flag to the Header.
  158. *
  159. *   SYNOPSIS
  160. *        cf_AddHdrFlag(Header,Flag)
  161. *
  162. *        cf_AddHdrFlag(HEADER/N/A,FLAG/A)
  163. *
  164. *   FUNCTION
  165. *        This function add a flag to the Header.
  166. *
  167. *   INPUTS
  168. *        Header - Pointer to the Header.
  169. *        Flag - Flag to add (see cf_ChkHdrFlag()).
  170. *
  171. *   SEE ALSO
  172. *        cf_ChkHdrFlag(), cf_RemHdrFlag()
  173. *
  174. ******************************************************************************
  175. *
  176. */
  177.  
  178. UWORD rxcf_AddHdrFlag ( RX_FUNC_ARGS, CFHeader * Header )
  179. {
  180.     if ( RXARG2 )
  181.     {
  182.         UBYTE    Flag = StrToHdrFlag (RXARG2);
  183.         if ( Flag == -1 ) return (RXERR_INVALID_ARG);
  184.         Header->Flags |= Flag;
  185.         return (RC_OK);
  186.     }
  187.  
  188.     return (RXERR_INVALID_ARG);
  189. }
  190.  
  191. /****** rexxconfigfile.library/cf_RemHdrFlag *********************************
  192. *
  193. *   NAME
  194. *        cf_RemHdrFlag -- Remove a flag to the Header.
  195. *
  196. *   SYNOPSIS
  197. *        cf_RemHdrFlag(Header,Flag)
  198. *
  199. *        cf_RemHdrFlag(HEADER/N/A,FLAG/A)
  200. *
  201. *   FUNCTION
  202. *        This function remove a flag to the Header.
  203. *
  204. *   INPUTS
  205. *        Header - Pointer to the Header.
  206. *        Flag - Flag to remove (see cf_ChkHdrFlag()).
  207. *
  208. *   SEE ALSO
  209. *        cf_ChkHdrFlag(), cf_AddHdrFlag()
  210. *
  211. ******************************************************************************
  212. *
  213. */
  214.  
  215. UWORD rxcf_RemHdrFlag ( RX_FUNC_ARGS, CFHeader * Header )
  216. {
  217.     if ( RXARG2 )
  218.     {
  219.         UBYTE    Flag = StrToHdrFlag (RXARG2);
  220.         if ( Flag == -1 ) return (RXERR_INVALID_ARG);
  221.         Header->Flags &= ~Flag;
  222.         return (RC_OK);
  223.     }
  224.  
  225.     return (RXERR_INVALID_ARG);
  226. }
  227.  
  228. /****** rexxconfigfile.library/cf_SetWBufSize ********************************
  229. *
  230. *   NAME
  231. *        cf_SetWBufSize -- Set the size of the writebuffer in the Header.
  232. *
  233. *   SYNOPSIS
  234. *        cf_SetWBufSize(Header,NewSize)
  235. *
  236. *        cf_SetWBufSize(HEADER/N/A,NEWSIZE/A)
  237. *
  238. *   FUNCTION
  239. *        This function set the size of the writebuffer in the Header.
  240. *
  241. *   INPUTS
  242. *        Header - Pointer to the Header.
  243. *        NewSize - New size of the writebuffer (2048 - X bytes).
  244. *                  Note the size must be longword aligned.
  245. *
  246. *   SEE ALSO
  247. *        cf_GetWBufSize()
  248. *
  249. ******************************************************************************
  250. *
  251. */
  252.  
  253. UWORD rxcf_SetWBufSize ( RX_FUNC_ARGS, CFHeader * Header )
  254. {
  255.     LONG    NewSize;
  256.  
  257.     if ( RXARG2  && (StrToLong (RXARG2, &NewSize) != -1) )
  258.     {
  259.         NewSize = ( NewSize == 0 ) || ( NewSize < 2048 )
  260.                         ? 2048 : ( ( NewSize + 3 ) & ~3 );
  261.         Header->WBufLength = NewSize;
  262.         return (RC_OK);
  263.     }
  264.  
  265.     return (RXERR_INVALID_ARG);
  266. }
  267.